package org.dangran.service.impl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class ScheduleTask {

    //单线程情况预期：task2开始，task2结束。task1开始，任务开始卡住10秒 task不执行。task1结束。
    //配置线程后预期：task2开始，task2结束。task1开始，task2开始，task2结束。···。task1结束。

    //延迟一秒执行，执行完后2秒执行
    @Scheduled(initialDelay = 1000, fixedDelay = 2000)
    public void TestTask1() {

        log.info("task1开始");
        try {
            //模拟任务时间10秒
            Thread.sleep(10000);
        } catch (Exception e) {
            log.info("定时任务执行失败", e);
            throw new RuntimeException(e);
        }
        log.info("task1结束");
    }

    //延迟一秒执行，执行完后2秒执行
    @Scheduled(fixedDelay = 1000)
    public void TestTask2() {

        log.info("task2开始");
        try {
            //模拟任务时间10秒
            Thread.sleep(2000);
        } catch (Exception e) {
            log.info("定时任务执行失败", e);
            throw new RuntimeException(e);
        }
        log.info("task2结束");
    }

}
